/******************************************************************************
 *
 * @file       chatview.h
 * @brief      聊天区域的聊天框部分
 *
 * @author     ario
 * @date       2024/08/08
 * @history
 *****************************************************************************/

#ifndef CHATVIEW_H
#define CHATVIEW_H

#include <QWidget>
#include <QVBoxLayout>
#include <QScrollArea>
#include <QEvent>


class ChatView : public QWidget
{
    Q_OBJECT

public:
    explicit ChatView(QWidget *parent = nullptr);
    ~ChatView();

    // 添加条目到聊天背景
    void appendChatItem(QWidget * item);        // 尾插
    void prependChatItem(QWidget * item);       // 头插
    void insertChatItem(QWidget * item);        // 中间插
    void removeAllItem();

protected:
    virtual bool eventFilter(QObject *watched, QEvent *event) override;
    virtual void paintEvent(QPaintEvent *event) override;

private slots:
    void onVScrollBarMoved(int min, int max);

private:
    void initStyleSheet();

private:
    /*
     * 两种实现聊天界面的方式：
     * 1. 使用QListWidget，性能好
     * 2. 使用QScrollArea + 垂直布局，数量可控
     */
    QVBoxLayout * _pVl;
    QScrollArea * _pScrollArea;
    bool _isAppended; // 控制加载过程，当前加载完毕才能加载下一次
};

#endif // CHATVIEW_H
